package tas.web.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import tas.dao.DaoTrabajadores;
import tas.dao.impl.DaoTrabajadoresImpl;

@WebServlet(name = "ServletTrabajadores_Imp", urlPatterns = {"/view/admin/Trabajadores_Imp"})
public class ServletTrabajadores_Imp extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String autorizacion = (String) request.getSession().getAttribute("autorizacion");
        String ID = (String) request.getSession().getAttribute("ID");

        if ((ID == null) || (autorizacion == null)
                || (!autorizacion.equals("ADMIN"))
                || (!ID.equals(request.getSession().getId()))) {

            response.sendRedirect("../");

        } else {

            request.setCharacterEncoding("UTF-8");
            String accion = request.getParameter("accion");
            String result = null;
            String contentType = "text/html;charset=UTF-8";
            //
            DaoTrabajadores daoTrabajadores = new DaoTrabajadoresImpl();

            if (accion == null) {
                result = "Solicitud no recibida";

            } else if (accion.equals("QRY")) {
                String nroDocumento = request.getParameter("nroDocumento");

                boolean existe = daoTrabajadores.trabajadoresExiste(nroDocumento);

                if (existe) {
                    result = "Trabajador ya se encuentra registrado";

                } else {
                    List<Object[]> list = daoTrabajadores.trabajadoresImp1(nroDocumento);

                    if (list != null) {
                        if (list.isEmpty()) {
                            result = "Trabajador no Existe";
                        } else {
                            StringBuilder sb = new StringBuilder();

                            for (Object[] f : list) {
                                sb.append("<tr>");
                                sb.append("<td>");
                                sb.append("<input type=\"hidden\" value=\"").append(f[0]).append("\" name=\"_idcore\"/>");
                                sb.append("<input type=\"hidden\" value=\"").append(f[1]).append("\" id=\"_nombre\"/>");
                                sb.append("<input type=\"hidden\" value=\"").append(f[4]).append("\" name=\"_appa\"/>");
                                sb.append("<input type=\"hidden\" value=\"").append(f[5]).append("\" name=\"_apma\"/>");
                                sb.append("<input type=\"hidden\" value=\"").append(f[6]).append("\" name=\"_nomsim\"/>");
                                sb.append("<input type=\"hidden\" value=\"").append(f[7]).append("\" name=\"_email\"/>");
                                sb.append(f[1]);
                                sb.append("</td>");
                                sb.append("<td>").append(f[2]).append("</td>");
                                sb.append("<td>").append(f[3]).append("</td>");
                                sb.append("</tr>");
                            }

                            result = "Ok!" + sb.toString();
                        }
                    } else {
                        result = "Consulta no puede ser atendida";
                    }
                }

            } else if (accion.equals("IMP")) {
                String idcore = request.getParameter("idcore");
                String vappa = request.getParameter("vappa");
                String vapma = request.getParameter("vapma");
                String vnomsim = request.getParameter("vnomsim");
                String vemail = request.getParameter("vemail");
                boolean existe = true;

                String usuario = null;
                int len = vapma.length();
                int i = 1;

                //Identificar Usuario
                
                 
                 existe = daoTrabajadores.UsuarioExiste(vemail);
                 
                  if (existe) {
                      usuario = null;
                  }
                  else
                  {
                    usuario=vemail;
                  }
                 
                 
                  if (usuario == null){
                      usuario = vnomsim.trim().substring(0, 1) + vappa;
                      
                    
                    
                              
                        existe = daoTrabajadores.UsuarioExiste(usuario);

                        if (existe) {
                            while (i < len) {

                                usuario = usuario + vapma.trim().substring(0, i);
                                existe = daoTrabajadores.UsuarioExiste(usuario);

                                if (existe == false) {
                                    break;
                                }
                                i++;
                            }
                        }
                    

                }
                //
                if (usuario != null) {
                    result = daoTrabajadores.trabajadoresImp2(idcore, usuario, vappa, vapma, vnomsim);
                }

            } else {
                result = "No se encontro nombre de usuario disponible";
            }

            if (result == null) {
                result = ""; // por ajax, para que regrese a mismo JSP
            }

            response.setContentType(contentType);
            PrintWriter out = response.getWriter();
            out.print(result);
            out.close();
        }
    }

    private String usuarioGet(String ap, String am, String nom, String email) {
        String usuario = null;

        return usuario;

    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
